import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getProfile,getUserDetailById } from '@/api/user'

export default {
  namespaced: true,
  state: {
    // 本地取一下token
    token: getToken() || '',
    userInfo:{}
  },
  mutations: {
    // 设置token
    updateToken(state, token) {
      state.token = token

      // 本地存储token
      setToken(token)
    },
    // 删除token
    removeToken(state) {
      state.token = null
      // 删除本地token
      removeToken()
    },
    setUserInfo(statr,userInfo){
      statr.userInfo = userInfo
    },
    removeUserInfo(start){
      start.userInfo = {}
    }

  },
  actions: {
    // data表示接口参数
    async userLogin(context, obj) {
      console.log('action userLogin', context, obj)
      // 调用ajax请求去做登陆
      const res = await login(obj)
      // 在actions中，如果要修改state，还是要调用mutaions
      // context.commit('mutation名'， 参数)
      console.log(res.data,'登录请求返回的res')
      const token = res.data;
      // 存储 Token，而非依赖 Cookie
      localStorage.setItem('token', token);
      context.commit('updateToken', res.data)
      
    },
    async getUserInfo(context){
      const info = await getUserDetailById(rs.data.userId)
      console.log(info);
      const rs = await getProfile()
      console.log('getUserInfo被调用了');
      console.log(rs,'用户信息');
      context.commit('setUserInfo', { ...info.data, ...rs.data })
    },
    userLogout(context) {
      context.commit('removeUserInfo')
      context.commit('removeToken')
    },
  }
}